
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <link rel="stylesheet" href="./../../cesium/Cesium1.98/Widgets/widgets.css">
    <script type="text/javascript" src="./../../cesium/Cesium1.98/Cesium.js"></script>

</head>

<body style="margin: 0; overflow: hidden; background: #fff; width: 100%; height: 100%; position: absolute; top: 0">
    <div id="map" style="margin: 0 auto; width: 100%; height: 100%"></div>
    <script type="text/javascript">

        Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI3ZjQ5ZGUzNC1jNWYwLTQ1ZTMtYmNjYS05YTY4ZTVmN2I2MDkiLCJpZCI6MTE3MTM4LCJpYXQiOjE2NzY0NDUyODB9.ZaNSBIfc1sGLhQd_xqhiSsc0yr8oS0wt1hAo9gbke6M'

        const viewer = new Cesium.Viewer('map', {
            shouldAnimate: true
        });

        // 开启帧率
        viewer.scene.debugShowFramesPerSecond = true;

        // 新版本API Model.fromGltfAsync
        // https://cesium.com/learn/cesiumjs/ref-doc/Model.html?classFilter=model


        // --------------不带方位-----------
        // var origin = Cesium.Cartesian3.fromDegrees(-95.0, 40.0, 200000.0);
        // var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(origin);

        // --------------带方位-------------
        let heading = Cesium.defaultValue(90, 0.0);
        let pitch = Cesium.defaultValue(0, 0.0);
        let roll = Cesium.defaultValue(0, 0.0);
        var hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll);
        var origin = Cesium.Cartesian3.fromDegrees(-95.0, 40.0, 200000.0);
        var modelMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(origin, hpr);

        const model = viewer.scene.primitives.add(Cesium.Model.fromGltf({
            scale: 7000,
            modelMatrix: modelMatrix,
            url: './Man.glb',
        }));

        viewer.camera.lookAtTransform(modelMatrix, new Cesium.Cartesian3(-50000, 0, 80000));

        // cesium 1.107+ 的图元(Primitive) 已经不支持 readyPromise
        // 完全载入
        model.readyPromise.then(function (model) {
            console.log(model)

            model.silhouetteSize = 3
            model.silhouetteColor = Cesium.Color.fromCssColorString("rgba(254, 129, 6, 0.65)");

            // 动画是存储在glTF模型里，所以需要等待readyPromise执行后才能访问他们
            model.activeAnimations.addAll({
                loop: Cesium.ModelAnimationLoop.REPEAT,  //循环播放动画
                speedup: 0.5,
                reverse: true
            });
        })

    </script>
</body>

</html>